perm filename TMP.PUB[HAL,HE]1 blob sn#130957 filedate 1974-11-20 generic text, type T, neo UTF8
.FIGS←TRUE;
.STD_SPREAD ← 1;

.<<PUB STATEMENTS>>

.TURN ON "∞π↑↓[]{_α#←→&∂";
.TURN OFF TAB;
.STD_PREFACE← 2*STD_SPREAD - 1;
.SPREAD ← STD_SPREAD ;
.PREFACE STD_PREFACE ;
.NOFILL; PREFACE SPREAD-1; FILL;

.MACRO UNFILL ⊂BEGIN NOFILL;TURN OFF "←→";PREFACE SPREAD-1;SKIP 2-SPREAD;GROUP⊃;
.MACRO MATRIX ⊂BEGIN NOFILL PREFACE 0 SKIP SPREAD GROUP⊃
.MACRO REFILL ⊂END; SKIP 2-SPREAD; CONTINUE⊃;
.MACRO MAYBREAK ⊂APART;GROUP;⊃;
.MACRO BULL ⊂ONCE; FLUSH LEFT⊃;
.MACRO REPART ⊂END; SKIP 2-SPREAD; APART⊃;
.MACRO COMT(X) ⊂BEGIN FILL;INDENT X,X;PREFACE 0;}%4{⊃

.COUNT SECTION FROM 1 TO 99 PRINTING ⊂SECTION⊃;
.COUNT SUBSEC FROM 0 TO 99 IN SECTION PRINTING "!.1";
.COUNT SUBSUBSEC FROM 0 TO 99 IN SUBSEC PRINTING "!.1";
.COUNT FOOTNOTE INLINE FROM 1 TO 9 IN PAGE;

.MACRO NEWSEC(TITLE,ID) ⊂
.NEXT SECTION!;
.IF PICLIN≠NULL THEN ALLPIC;
.SECNAME←NULL;
.SSECNAME←NULL;
.SSSNUM←NULL
.NEXT SUBSEC;FIGURE←0;TABLE←0;
.SECNAME←"TITLE";
.SSECNAME←"ID";
.SKIP TO COLUMN 1; BEGIN CENTER;
%5{SECID} {SECTION!}%*
%6{SECNAME}%*
.END
.SEND CONTENTS ⊂IF LINES<3*SPREAD+1 THEN
.BEGIN 
.NEXT PAGE
{SECID}→PAGE
.END

{SECTION!}  TITLE →{PAGE!}
.⊃
.SECNAME←"TITLE";⊃



.MACRO NEWSS(TITLE,ID,LAB) ⊂
.NEXT SUBSEC!;
.IF PICLIN≠NULL THEN ALLPIC;
.SSSNUM←SUBSEC!
.NEXT SUBSUBSEC;
.IF LINES≤10*SPREAD THEN NEXT PAGE ELSE SKIP 4*SPREAD;
.SSECNAME←"ID";
.IF SSECNAME=NULL THEN SSECNAME←"TITLE";
%5{SUBSEC!}      TITLE%*
.SEND CONTENTS ⊂IF LINES<3*SPREAD+1 THEN
.BEGIN 
.NEXT PAGE
{SECID}→PAGE
.END
    {SUBSEC!}  TITLE →{PAGE!}
.⊃
.⊃

.MACRO NEWSSS(TITLE,LAB) ⊂
.NEXT SUBSUBSEC!;
.IF PICLIN≠NULL THEN ALLPIC;
.SSSNUM←SUBSUBSEC!
.IF LINES≤8*SPREAD THEN NEXT PAGE ELSE SKIP 2*SPREAD;
%4{SUBSUBSEC!}     TITLE%*
.BREAK
.SEND CONTENTS ⊂IF LINES<3*SPREAD+1 THEN
.BEGIN 
.NEXT PAGE
{SECID}→PAGE
.END
	{SUBSUBSEC!}  TITLE →{PAGE!}
.⊃
.⊃


.COUNT EQUATION INLINE IN SECTION PRINTING "!.1"

.MACRO NEWEQ⊂
.NEXT EQUATION!;TURN ON "→";"→[Eq. ";EQUATION!;"]";TURN OFF "→";⊃

.MACRO EQREF(LBL)⊂"Equation ";EQUATION! LBL⊃
.MACRO SECREF(LBL)⊂"Chapter ";SECTION! LBL⊃
.MACRO SSREF(LBL)⊂"Section ";SUBSEC! LBL ⊃
.MACRO SSSREF(LBL)⊂"subsection ";SUBSUBSEC! LBL⊃
.MACRO APREF(LBL)⊂"Appendix ";SECTION! LBL⊃
.MACRO FIGREF(LBL)⊂"Figure ";FIGURE   LBL⊃
.MACRO TABREF(LBL)⊂"Table "; LBL⊃
.AT NULL ⊂IF FILLING THEN
.    START BREAK;
.    IF LINES<2*SPREAD+1 THEN NEXT PAGE END
.  ELSE SKIP SPREAD⊃;

.RECURSIVE MACRO STOREPIC(TITLE,LINES,TEMP) ⊂START
.PICLIN←PICLIN&"  "[1 TO 2-LENGTH("LINES")]&"LINES";
.PICNUM←PICNUM&"    "[1 TO 4-LENGTH(TEMP)]&TEMP;
.PICTLEN←PICTLEN&"  "[1 TO 2-LENGTH(LENGTH("TITLE"))]&LENGTH("TITLE");
.PICTIT←PICTIT&"TITLE";
.END⊃

.MACRO NEWFIG(TITLE,εLINES,LABEL) ⊂
.FIGURE←FIGURE+1; LABEL TEMP←SECTION&"."&FIGURE; }Figure {TEMP;
.STOREPIC(|TITLE|,LINES,TEMP) ⊃;

.MACRO MAKEFIG(TITLE,εLINES,LABEL) ⊂
.FIGURE←FIGURE+1;LABEL TEMP←SECTION&"."&FIGURE;
.STOREPIC(|TITLE|,LINES,TEMP) ⊃;

.PICLIN←PICNUM←PICTLEN←PICTIT←NULL
.MACRO SMALLPIC⊂⊃
.MACRO ALLPIC⊂⊃

.MACRO NEWTABLE(TITLE,LABEL)⊂
.TABLE←TABLE+1; LABEL TEMP←SECTION&"."&TABLE;
.BEGIN NOFILL CENTER GROUP

Table {TEMP}

TITLE
.⊃;

.IF FIGS THEN START

.MACRO PLACEPIC ⊂BEGIN CENTER PREFACE SPREAD-1
.A←PICLIN[1 TO 2]; B←PICNUM[1 TO 4];
.C←PICTLEN[1 TO 2]; D←PICTIT[1 TO C];
.PICLIN←PICLIN[3 TO ∞]; PICNUM←PICNUM[5 TO ∞];
.PICTLEN←PICTLEN[3 TO ∞]; PICTIT←PICTIT[C+1 TO ∞];
.GROUP SKIP A;
Figure {B}
{D}
.SKIP 2*SPREAD;
.END⊃

.RECURSIVE MACRO RSPIC ⊂
.IF LINES-3*SPREAD≥PICLIN[1 TO 2] THEN PLACEPIC
.ELSE START
.	TLIN←TLIN&PICLIN[1 TO 2]; PICLIN←PICLIN[3 TO ∞];
.	TNUM←TNUM&PICNUM[1 TO 4]; PICNUM←PICNUM[5 TO ∞];
.	C←PICTLEN[1 TO 2];
.	TTLEN←TTLEN&C; PICTLEN←PICTLEN[3 TO ∞];
.	TTIT←TTIT&PICTIT[1 TO C]; PICTIT←PICTIT[C+1 TO ∞];
.	END;
.IF PICLIN≠NULL THEN RSPIC⊃

.RECURSIVE MACRO SMALLPIC ⊂
.TLIN←TNUM←TTLEN←TTIT←NULL;
.RSPIC;
.PICLIN←TLIN; PICNUM←TNUM; PICTLEN←TTLEN; PICTIT←TTIT;
.IF LINES<2*SPREAD-1 THEN NEXT PAGE ⊃

.RECURSIVE MACRO ALLPIC ⊂
.IF PICLIN≠NULL THEN SMALLPIC;;
.IF PICLIN≠NULL THEN BEGIN PLACEPIC; ALLPIC END ⊃

.AT NULL ⊂IF FILLING THEN
.    START BREAK;
.    IF PICLIN≠NULL THEN SMALLPIC;
.    IF LINES<2*SPREAD+1 THEN NEXT PAGE END
.  ELSE SKIP SPREAD⊃;

.BEFORE PAGE ⊂STANDARD TITLES;
.    IF PICLIN≠NULL THEN SMALLPIC ⊃

.END COMMENT PICTURE MACROS;
 



.BOTTOM←50;
.MACRO FULL⊂BOTTOM-3*SPREAD⊃
.MACRO HALF⊂BOTTOM/2-3*SPREAD⊃
.MACRO THIRD⊂BOTTOM/3-3*SPREAD⊃

.SECNAME←NULL
 

.device xgp
.IF XCRIBL THEN FONT 1 "BASL30[HAL,HE]"
.IF XCRIBL THEN FONT 4 "BASI30[HAL,HE]"
.IF XCRIBL THEN FONT 5 "BASB30"
.IF XCRIBL THEN FONT 6 "BDR40"
.IF XCRIBL THEN FONT 7 "LPT"

.IF XCRIBL THEN START
.!xgplftmar← 200
.END
.PAGE FRAME 53 HIGH 80 WIDE;
.TITLE AREA HEADING LINES 1 TO 4 CHARS 1 TO 80;
.AREA TEXT LINES 5 TO 53 CHARS 1 TO 80;
.TURN ON "%\"
.TABS 17
.SECID←"CHAPTER";
.SECNAME←NULL
.COUNT PAGE FROM 1 TO 999 PRINTING ⊂PAGE⊃;
.IF XCRIBL THEN SELECT 1 

.NEXT PAGE
.SSECNAME←NULL;
.PORTION TITLEPAGE
.BEGIN NOFILL;turn on "↑";
.AREA TEXT LINES 1 TO 53 CHARS 1 TO 80
.NEXT PAGE
.GROUP SKIP 1
%1STANFORD ARTIFICIAL INTELLIGENCE LABORATORY →SEPTEMBER 1974
MEMO AIM-243
.GROUP SKIP 2
COMPUTER SCIENCE DEPARTMENT
REPORT CS-456
.GROUP SKIP 4
.NOFILL CENTER
%6'AL, A Programming System for Automation
.GROUP SKIP 4
%1Raphael Finkel, Russell Taylor, Robert Bolles, Richard Paul, Jerome Feldman↑*


.GROUP SKIP 5
.FILL ADJUST COMPACT
.NARROW 8,8
	'AL, a new language for specification of manipulatory actions, is
described.  It is the most recent in a series of efforts in this direction,
a series including, 
in particular, APT and WAVE.  The 'AL system includes a source language with
advanced features for describing individual motions of manipulators and
complex series of motions making up an entire assembly, and the runtime
system necessary for execution of programs.
.WIDEN
.NOFILL SKIP TO LINE 37
.FILL
∞_→#
.BREAK
%4↑* Jerry Feldman is now at the University of Rochester.

This research was supported in part by the
National Science Foundation under contract No. GIα-42906 and in part by
the Advanced Research
Projects Agency of the Office of Defense under Contract No. DAHC-15-73-C-0435.

The views and conclusions in this document are those of the authors and 
should not be interpreted as necessarily representing the official policies,
either expressed or implied, of the
funding agencies.

Reproduced in the USA. Available from the National Technical Information
Service, Springfield, Virginia 22151.%*
.END

.ADJUST COMPACT
.SECNAME←NULL
.SSECNAME←NULL
.SSSNUM←NULL
.INSERT CONTENTS
.PORTION BODY;
.COUNT PAGE FROM 1 TO 999 PRINTING ⊂PAGE⊃;
.EVEN HEADING(Page {PAGE!},{SSECNAME},{SSSNUM});
.ODD HEADING({SSSNUM},{SSECNAME},Page {PAGE!});
.NEXT PAGE
.REQUIRE "MINTRO.PUB" SOURCE_FILE; <<MEMO25(2) Introduction>>
.REQUIRE "MGOALS.PUB" SOURCE_FILE; <<MEMO25(3:6) Goals>>
.REQUIRE "MSYSOL.PUB" SOURCE_FILE; <<MEMO25(7),61(2) System outline>>
.REQUIRE "MUSER.PUB"  SOURCE_FILE; <<MEMO8(2) User features>>
.REQUIRE "MDATST.PUB" SOURCE_FILE; <<MEMO61(8:11) Data structures>>
.REQUIRE "MMOTNS.PUB" SOURCE_FILE; <<MEMO61(12:17) Motion specs>>
.REQUIRE "MGRAPH.PUB" SOURCE_FILE; <<graph structures (subsection) >>
.REQUIRE "MCTRST.PUB" SOURCE_FILE; <<MEMO61(3:7) Control structures>>
.REQUIRE "MCTCST.PUB" SOURCE_FILE; <<MEMO61(18,19),63(2:7) Compile time constructs>>
.REQUIRE "MLIBRT.PUB" SOURCE_FILE; <<MEMO63(8) Library routines>>
.REQUIRE "MVHL.PUB"   SOURCE_FILE; <<MEMO64 Very high level>>
.REQUIRE "MRUNTM.PUB" SOURCE_FILE; <<MEMO7 Runtime overview>>
.REQUIRE "MEXTEN.PUB" SOURCE_FILE; <<MEMO9 Extensions>>
.REQUIRE "MBIB.PUB"   SOURCE_FILE; <<MEMO10 Bibliography>>

.PORTION APPENDIX
.SECID←"APPENDIX";
.SEND CONTENTS ⊂

APPENDICES
.⊃
.COUNT SECTION FROM 1 TO 99 PRINTING  "I";
.COUNT SUBSEC FROM 0 TO 9 IN SECTION PRINTING "!.1";
.COUNT SUBSUBSEC FROM 0 TO 99 IN SUBSEC PRINTING "!.1";
.REQUIRE "MDIALG.PUB" SOURCE_FILE; <<MEMO8(3) Dialog>>
.REQUIRE "MXMPLS.PUB" SOURCE_FILE; <<XMPLES Examples:  appendix>>
.REQUIRE "MRTAPP.PUB" SOURCE_FILE; <<RUNTIM Runtime details:  appendix>>

.PORTION CONTENTS
.COUNT PAGE FROM 2 PRINTING "i";
.SSECNAME←"FOREWORD";
.SSSNUM ← NULL;
.SECNAME←"FOREWORD";
.NEXT PAGE
	This document describes  the new hand  language, 'AL.   It is
not intended to be a final language specification or a user's manual.
Rather, it is  a working document presenting a number of  related
ideas concerning a  system for programmable automation.   These ideas
cover  a broad range  of topics: arm servoing,   parallel processing,
assembly world modelling,  strategists, and language design.  We have
tried to combine these into  a coherent system.  However, as you read
this document you  will notice  that some topics  have been  explored
more than others, some explanations contain more detail than others,
and  some questions  are left  unanswered.   Various portions  of the
system have already been implemented. 

	Interested persons unfamiliar with the background for this work
will find it useful to read %4The Use of Sensory Feedback in a 
Programmable Assembly System%* [Bolles and Paul].

	We would  like to thank  those people  who have  made
numerous suggestions  and have helped implement  various parts of the
system.   
In particular, we  would to  thank Bertrand  Meyer, who  
implemented  the   scanner  and  parser,   Bo  Eross,   who  is
implementing  the PDP11  runtime monitor,
Bruce Baumgart, who assisted with the illustrations,
and Larry Tesler, whose document preparation program PUB was used
to prepare this paper.
We also wish to thank D. Whitney, J. Nevins, and D. Killoran of
Draper Labs and Bill Park of Stanford Research Institute for their
helpful criticisms and suggestions.


During the period in which the work reported here was performed,
Russ Taylor was supported in part by a fellowship from the Alcoa Corporation,
Raphael Finkel was supported by a NSF fellowship, and Bob Bolles
was supported in part by the Hertz Corporation.  We would like to
thank all these agencies for their assistance.

	The English language has no genderless personal pronoun; without
any implication of sexism we use arbitrary forms in its place.


.SSECNAME←"TABLE OF CONTENTS";
.SECNAME←"TABLE OF CONTENTS";
.NEXT PAGE
.INDENT 0
.NOFILL
.TURN ON "∞→"
CHAPTER →PAGE
.RECEIVE